1. Field of the Invention
The present invention relates to an improvement to the Microsoft® Windows® family of operating systems, and in particular, to the addition of a pseudo-multithread framework to the filter pipeline of an XPSDrv print driver.
2. Description of the Related Art
Recently, Microsoft Corporation has introduced the Microsoft® Windows Vista™ operating system. One of the new features of this operating system is the XPS print path which includes a print architecture that is designed to improve support for printing and document processing.
In particular, print jobs that are processed through the XPS print path are processed by a print driver (referred to as the “XPSDrv” print driver) which includes a filter pipeline (referred to as the “XPSDrv Filter Pipeline”). The XPSDrv print driver and print path processing are described in greater detail in the Microsoft® Windows® whitepaper entitled “The XPSDrv Filter Pipeline”, published Nov. 3, 2005 (see http://www.microsoft.com/whdc/).
FIG. 1 illustrates system components of the conventional XPS print path which includes the XPSDrv print driver. The XPSDrv print driver further includes the XPSDrv Filter Pipeline which is considered the main processing feature of the XPSDrv print driver. Here, the system components include a print subsystem module 100 which includes a scheduler 116, a port 118 and serialization services 120. Also, a print filter pipeline service module 102 is provided which includes a filter pipeline manager 122, an inter-filter communicator 124, and a series of filters 126, 128, 130 (e.g., Filters 1-n). In addition, the XPS print path utilizes a filter configuration file 106, an XPS spool file 108 and a printer 110 or the like.
The creation of a typical XPSDrv filter pipeline will now herein be described in greater detail. A print job 104 is received into the print subsystem module 100 where the print job 104 is spooled by a print spooler and a spool file for the job is created in the XPS spool file 108. After documents have been spooled into an XPS spool file 108 and the job is ready to print, the scheduler 116 signals the filter pipeline manager 122 to begin processing. The filter pipeline manager 122 then reads the filter configuration file 106 and loads the filters that are listed in the configuration file 106. Next, the filter pipeline is initialized.
Thereafter, the filter pipeline manager 122 begins the filter pipeline process wherein the first filter 126 (Filter 1) in the filter pipeline reads the contents of the XPS spool file 108 for the specific job. Here, the first filter 126 reads the document parts and XML PrintTickets (print ticket), and performs processing to the document. Then, the filter 126 sends the processed document parts to the next filter 128 in the pipeline (Filter 2). This process is facilitated by using the interfilter communicator (IFC) 124, which retains intermediate processing results until the next filter in the pipeline is available.
When the next filter 128 in the pipeline is ready, it reads the document parts that the previous filter 126 processed. After the data is processed, the results are written back to the interfilter communicator 124. This process is performed for each filter (1-n) in the filter pipeline. After each filter processing is complete, the output from the last filter 130 (Filter n) is sent to the port 118 defined by the printer driver such that a document may be printed via the printer 110, or the like.
As discussed above, the XPS spool file 108 for the job is fed to the filters (1-n). It is noted that the XPS spool file 108 is defined by a hierarchical set of document parts that describe different aspects of the content of the document. In particular, the XPS spool file typically includes a Fixed Document Sequence object, Fixed Document objects, and Fixed Page objects.
FIG. 1B is provided to illustrate the typical relation between a Fixed Document Sequence 140 object, Fixed Document 150 objects, and Fixed Page 160 objects. An XPS spool file 108 contains only one Fixed Document Sequence 140. The Fixed Document Sequence 140 contains one or more Fixed Documents 150 and may or may not contain a print ticket 142, which specifies the print settings for a print job, Fixed Document 150 or a Fixed Page 160. Further, a Fixed Document 150 contains one or more Fixed Pages and may or may not contain a print ticket. And also, a Fixed Page 160 contains resources (e.g., fonts 162, images 164) and may or may not contain a print ticket 146.
Although the overall performance of the XPSDrv print drivers for the Microsoft® Windows® family of operating systems provides a viable new print architecture that improves support for printers and document processing, it is noted, however, that there is an inherent processing restriction indigenous to the XPSDrv Filter Pipeline environment.
In particular, the filters in the pipeline 126, 128, 130 (1-n) are not recommended to spawn threads, meaning that, within a filter all processing has to performed in a sequential (single threaded) mode. As a result, since the filtering is performed sequentially, the overall processing time for the print job inherently has some undesired latency. That is to say, the filters in the pipeline 126, 128, 130 (1-n), and their order of execution, are statically defined by the XPSDrv print driver's filter configuration file 106, meaning that, filters in the pipeline and their order of execution cannot be dynamically changed based on the print ticket settings. As a result, the XPSDrv print driver's document processing can not be optimized for the print job and processing time for print jobs is increased.
Therefore, it would be advantageous to enhance the XPSDrv print driver for the Microsoft® Windows Vista™ operating system by adding and/or modifying software features which will help speed up the overall processing time for the print job even though filtering is performed sequentially.